using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
using EjemploDirectX.TgcViewer.Utils.TgcSceneLoader;

namespace TgcViewer.Utils.TgcSceneLoader
{
    public class TgcScene
    {
        string sceneName;
        /// <summary>
        /// Nombre de la escena
        /// </summary>
        public string SceneName
        {
            get { return sceneName; }
        }

        string filePath;
        /// <summary>
        /// Path del archivo XML de la escena
        /// </summary>
        public string FilePath
        {
            get { return filePath; }
        }

        List<TgcMesh> meshes;
        /// <summary>
        /// Mallas cargadas en la escena
        /// </summary>
        public List<TgcMesh> Meshes
        {
            get { return meshes; }
        }


        internal TgcScene(string sceneName, string filePath)
        {
            this.sceneName = sceneName;
            this.filePath = filePath;
            this.meshes = new List<TgcMesh>();
        }

        /// <summary>
        /// Habilita o deshabilita todas las mallas
        /// </summary>
        /// <param name="flag"></param>
        public void setMeshesEnabled(bool flag)
        {
            foreach (TgcMesh mesh in meshes)
            {
                mesh.Enabled = flag;
            }
        }

        /// <summary>
        /// Renderiza todas las mallas que se encuentran habilitadas
        /// </summary>
        public void renderAll()
        {
            foreach (TgcMesh mesh in meshes)
            {
                mesh.render();
            }
        }

        /// <summary>
        /// Libera los recursos de todas las mallas
        /// </summary>
        public void disposeAll()
        {
            foreach (TgcMesh mesh in meshes)
            {
                mesh.dispose();
            }
        }


    }
}
